﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SG.Logic;
using SG.Domain;
using SG.UI.Models;

namespace SG.UI.Controllers
{
    public class ProveedorController : Controller
    {
        private ExpProveedor exp=new ExpProveedor();
        //
        // GET: /Proveedor/

        public ActionResult Index()
        {
            return View(exp.GetAllProveedor());
        }

        

        //
        // GET: /Proveedor/Create

        public ActionResult CreateEdit(int? id)
        {
            Proveedor entity = id.HasValue ? exp.GetProveedor(id.Value) : new Proveedor();

            return View(entity);
        }

        //
        // POST: /Proveedor/Create

        [HttpPost]
        public ActionResult CreateEdit(int? id, FormCollection collection)
        {
            Proveedor entity = new Proveedor();
            entity.Id = id.HasValue? id.Value:0;
            float fAux;
            int iAux;
            string err = "";
            try
            {
              
                entity.CUIT = collection["CUIT"];
                entity.Domicilio = collection["Domicilio"];
                entity.Nombre = collection["Nombre"];
                entity.Telefono = collection["Telefono"];

                if (int.TryParse(collection["TiempoR"], out iAux)) entity.TiempoR = iAux;
                else err += "El campo 'Tiempo R' debe ser numérico<br/>";
                
                string[] idArticuloList = collection["IdArticulo"].Split(',');
                string[] nombreArticuloList = collection["nombreArticulo"].Split(',');
                string[] tiempoEntregaList = collection["TiempoEspera"].Split(',');
                string[] costoList = collection["CostoAdquisicion"].Split(',');
                string[] costoEmisionList = collection["CostoEmision"].Split(',');
                string[] descuentoList = collection["Descuento"].Split(',');
                string[] cantidadMinimaDescList = collection["CantidadMinimaDescuento"].Split(',');
                
                if (idArticuloList != null && idArticuloList.Length > 0)
                {        
                    for (int i = 0; i < idArticuloList.Length; i++)
                    {
                        ArticuloProveedor ap = new ArticuloProveedor();
                        ap.TiempoEspera = float.Parse(tiempoEntregaList[i]);
                        ap.CostoEmision = float.Parse(costoList[i]);
                        ap.CostoAdquisicion = float.Parse(costoEmisionList[i]);
                        ap.Descuento = float.Parse(descuentoList[i]);
                        ap.CantidadMinDescuento = int.Parse(cantidadMinimaDescList[i]);
                        ap.IdArticulo = int.Parse(idArticuloList[i]);
                        ap.Articulo = new Articulo() {Id=ap.IdArticulo, Nombre=nombreArticuloList[i] };
                    
                        ap.IdProveedor = entity.Id;
                        entity.ArticuloProveedor.Add(ap);
                    }
                }

                exp.SaveOrUpdateProveedor(entity);
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                TempData["VMAlert"] = new VMAlert() { Title = "Err", Body = ex.Message };
                return View(entity);
            }
        }
        
        
       
        public ActionResult Delete(int id)
        {
            try
            {
                exp.DeleteProveedor(id);

                
            }
            catch (Exception ex)
            {
                TempData["VMAlert"] = new VMAlert() { Title = "Err", Body = ex.Message };
            }
            return RedirectToAction("Index");
        }

               
    }
}
